package edu.usmp.p2.service;

//import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
//import javax.persistence.EntityTransaction;

import edu.usmp.model.Paciente;
import edu.usmp.model.repository.PacienteRepository;
import edu.usmp.util.Utilitario;



/**
 * 
 * 
 * Service del paciente que contiene busqueda y grabar datos
 * @author AFalconR - Ronald Andrade - Desarrollador
 * DIS REGIL 2014 - 0
 * ver 1.1.0
 *
 */

@SuppressWarnings("unused")
public class EnfermeraService {
	private PacienteRepository pacienteRepository;
	private EntityManager em;
	
	/*
	 * Metodo que valida(o busca) al paciente 
	 * 
	 * 
	 */
	
	public EnfermeraService() {
		em=Utilitario.getInstance().getEntityManager();
	}
	
	public Paciente validarPaciente(Paciente p) throws RuntimeException{
		
		PacienteRepository pacienteRepository=new PacienteRepository(em);
		
		System.out.println("7777");	
		System.out.println("PPPP::"+p);	
		
		
		
		System.out.println("888888");
		System.out.println("pacienteRepository:: "+pacienteRepository);
		Paciente pacientedb=pacienteRepository.findById(p.getDni()); //p.getId()
		System.out.println("9999");
		if(pacientedb == null){
			System.out.println("11111");
			throw new RuntimeException("Paciente no existe");
		}else{
			System.out.println("SALIO PACIENTE");
			//System.exit(0);
		}
		
		
		
		return pacientedb;
	}
	
	public void registrarInf(Paciente paciente) throws RuntimeException{
		EntityTransaction tx=em.getTransaction();
		try{
			tx.begin();
			Paciente pacienteupd = pacienteRepository.findById(paciente.getDni());
			pacienteupd.setInforme(paciente.getInforme());
			pacienteRepository.update(paciente);
			tx.commit();
			
		}catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
			throw new RuntimeException("No se pudo actualizar");
		}

	}
	
	
	/*
	
	public Paciente buscarpaciente(Paciente p){
		System.out.println("Entra metodo busqueda-el id puesto es:"+p.getId());
		return pacienteRepository.findById(p.getId());
	}
	*/
	
	
	
	
	/*
	
	private PacienteRepository pacienteRepository;
	private EntityManager em;
	
	public RegistropacienteService(){
		em= Utilitario.getInstance().getEntityManager();
		pacienteRepository = new PacienteRepository(em);
	}

	public void registrarPaciente(Paciente a) throws RuntimeException{
		EntityTransaction tx=em.getTransaction();
		try{
			tx.begin();
			pacienteRepository.insert(a);
			tx.commit();
		}catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
			throw new  RuntimeException("No se pudo registrar");
		}
	}
	
	public void actualizarPaciente(Paciente paciente) throws RuntimeException{
		EntityTransaction tx=em.getTransaction();
		try{
			tx.begin();
			Paciente pacienteupd=pacienteRepository.findById(paciente);
			pacienteupd.setApellido(paciente.getApellido());
			pacienteupd.setNombre(paciente.getNombre());
			pacienteupd.setInforme(paciente.getInforme());
			pacienteupd.setEvaluacion(paciente.getEvaluacion());
			pacienteupd.setReceta(paciente.getReceta());
			em.merge(pacienteupd);
			tx.commit();
		}catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
			throw new RuntimeException("No se pudo actualizar");
		}

	}
	
	public Paciente buscarPaciente(String id){
		return pacienteRepository.findById(id);
	}
	
	public List<Paciente> listarPacientes(){
		return pacienteRepository.listAll();
	}

	public void eliminarPaciente(Paciente a){
		EntityTransaction tx=em.getTransaction();
		try{
			tx.begin();
			pacienteRepository.delete(a);
			tx.commit();
		}catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
			throw new RuntimeException("No se pudo eliminar");
		}
	}
	
*/

}
